package com.tz.crm.dao;


import com.tz.crm.entity.User;
import com.tz.crm.entity.VisitRecord;
import com.tz.crm.entity.VisitType;
import com.tz.crm.entity.dto.Report;

import java.util.Date;
import java.util.List;

/**
 * 拜访记录
 *
 * @author sheep
 */
public interface VisitRecordDao extends BaseDao<VisitRecord, String> {

    /**
     * 根据 awayMonth 月份计算拜访记录总数量
     *
     * @param awayMonth awayMonth
     * @return 拜访记录总数量
     */
    int getCount(int awayMonth);

    /**
     * 根据客户ID，获得拜访记录的总数量
     *
     * @param customerId 客户ID
     * @return 拜访记录的总数量
     */
    int getTotalCountByCustomerId(String customerId);

    /**
     * 根据查询条件，获得 Report 数据
     *
     * @param ownerList     客户负责人
     * @param visitTypeList 访问类型
     * @param fromDate      开始时间
     * @param toDate        截至时间
     * @param onlyWorkDays  是否工作日
     * @param user          当前登录用户
     * @return Report List
     */
    List<Report> report(List<User> ownerList, List<VisitType> visitTypeList,
                        Date fromDate, Date toDate, Boolean onlyWorkDays, User user);
    /**
     * 根据客户id 获取其拜访记录
     */
    List<VisitRecord> getAllByCusId(String id);
}
